package com.example;

import java.util.Scanner;

/**
 * 案例一：买飞机票
 */
public class Test1 {
    public static void main(String[] args) {
        /*
        需求
        用户购买机票时,机票原价会按照淡季,旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:
        5-10月为旺季,头等舱9折,经济舱8.5折:11月到来年4月为淡季,头等舱7折,经济舱6.5折请开发程序计算出用户当前机票的优惠价
         */
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入月份:");
        int month = sc.nextInt();
        System.out.print("请输入机票价格:");
        double price = sc.nextDouble();
        System.out.print("请输入机票类型(头等舱或经济舱):");
        String type = sc.next();
        // 调用计算机票价格的方法
        double result = calculate(month, price, type);
        System.out.println("优惠后的机票价格为:" + result);
    }

    /**
     * 计算机票价格
     *
     * @param month 月份
     * @param price 机票的价格 - 5-10月为旺季,头等舱9折,经济舱8.5折:11月到来年4月为淡季
     * @param type  机票类型 - 头等舱7折,经济舱6.5折
     * @return 返回优惠后的机票价格 如果返回-1 说明用户输入的参数有误
     */
    public static double calculate(int month, double price, String type) {
        // 判断用户输入的月份是否有效
        if (month < 1 || month > 12) {
            System.out.println("输入的月份无效");
            return -1;
        }

        // 判断用户输入的机票价格是否有效
        if (price <= 0) {
            System.out.println("机票价格无效");
            return -1;
        }

        // 判断用户输入的机票类型是否有效
        if (!type.equals("头等舱") && !type.equals("经济舱")) {
            System.out.println("机票类型无效");
            return -1;
        }

        // 判断当前月份是否为旺季
        if (month >= 5 && month <= 10) {
            // 说明是旺季
            switch (type) {
                case "头等舱":
                    price *= 0.9;
                    break;
                case "经济舱":
                    price *= 0.85;
                    break;
            }
        } else {
            // 因为在最上面我们进行了参数的校验,因此除去5-10月之外的其他月份,那么剩下的就是淡季了,如果有其他的月份说明就是非法的在上面就被拦截了
            // 说明是淡季
            switch (type) {
                case "头等舱":
                    price *= 0.7;
                    break;
                case "经济舱":
                    price *= 0.65;
                    break;
            }
        }

        // 返回优惠后的机票价格
        return price;
    }
}
